package reflect;

import java.lang.reflect.Constructor;

public class ReflectDemo04 {
    public static void main(String[] args) throws Exception{
        /*
         * 使用反射调用有参构造器
         */
        //1. 获取Class 对象
        Class cls = Class.forName("reflect.Worker");
        //2. 获取有参构造器
        //Declared 声明   Constructor 构造器
        //getDeclaredConstructor(参数列表)  根据参数类型
        //查找一个特定的构造器，如果找不到就出现异常
        //找到了就返回这个构造器对象
        //如下代码表示，寻找(String, int)的构造器
        Constructor constructor =
                cls.getDeclaredConstructor(String.class,int.class);
        //constructor   构造器对象
        System.out.println(constructor);
        //3.创建对象方法newInstance(参数值，参数值)
        //参数值，必须和构造器参数列表一致，否则出现异常!
        Object obj = constructor.newInstance("李四",24);
        System.out.println(obj);
    }
}
